# re.match, re.search  返回值 或 re.finditer 返回值的遍历 都是 re.Match对象
import re

m = re.search('a.*c', 'abcabcxyz')
print(dir(m))
print('查找范围：{}-{}'.format(m.pos, m.endpos))
print(m.span())  # 匹配代的 开始下标 和 结束下标-1

print(m.group())  # 匹配的字符串结果
# group可以传参表示第n个分组
# print(m.group(1))  # IndexError: no such group

# group方法表示正则表达式的分组
# 1.正则表达式中()表示多一个分组
# 2.若未分组，默认只有一个分组
# 3.分组下标从0开始

# 有4个分组，因为第0个分组是把整个正则表达式当做整体
m = re.search(r'(0.*)(1.*)(2.*3)', 'zzz0aaa1bbb2ccc3ddddddd')
print(m.group())  # 不传参默认group(0)
print(m.group(0))
print(m.group(2))

print(m.groups())  # ('0aaa', '1bbb', '2ccc3')

# groupdict 获取分组组成的字典
# ?P<group_name>
m = re.search(r'(0.*)(?P<group2>1.*)(?P<group3>2.*3)', 'zzz0aaa1bbb2ccc3ddddddd')
print(m.groupdict())  # {'group2': '1bbb', 'group3': '2ccc3'}
print('==============')
print(m.groupdict('group3'))  # {'group2': '1bbb', 'group3': '2ccc3'}
print(m.group(2))  # 1bbb
print(m.group('group2'))  # 1bbb
print(m.span())  # 默认整体(3, 16)
print(m.span(3))  # 第3组(11, 16)

